#include <REGX52.H>

/**
* 定时器0初始化
* 在STC-ISP中可以生成
* 右上角功能找到`定时器计算器`，
* 系统频率选择`11.0592MHz`，
* 选择定时器选择`定时器0`，
* 定时长度选择`1毫秒`
* 定时器模式选择`16位`
* 定时器时钟选择`12T`
* 然后去掉AUXR &= 0x7F;
* 加上中断选项
* ET0 = 0;
* EA = 1;
* PT0 = 0;
*/
void Timer0_Init()
{
  TMOD &= 0xF0; //设置定时器模式(不可按位赋值，前4位是定时器1，后4位是定时器0)
  // GATE=0;C/-T=0;(12T模式)M1=0;M0=1;(16位定时器)
  TMOD |= 0x01; //设置定时器模式(后4位赋值)
  // 如果是12MHZ，需要65536-1000=64536
  // TH0=65646/256;TL0=65646%256;
  TL0 = 0x66; //设置定时初始值(16位寄存器前8位)
  TH0 = 0xFC; //设置定时初始值(16位寄存器后8位)
  TF0 = 0;    //清除TF0标志
  TR0 = 1;    //定时器0开始计时
  // 中断
  ET0 = 1;
  EA = 1;
  PT0 = 0;
}

// 定时器0中断回调函数(每1ms)
// void Timer0_Routine() interrupt 1
// {
//   // 静态，防止被销毁
//   static unsigned int T0Count;
//   // 复位
//   TL0 = 0x66;
//   TH0 = 0xFC;
//   // 1s
//   if ((++T0Count) >= 1000)
//   {
//     T0Count = 0;
//     // 代码
//   }
// }
